Flowers Images Classification with CNNs
Multi-label flower image classification through custom-tuned Convolutional Neural Networks in TensorFlow.
This project was developed for the Deep Learning course in the Master’s Degree in Data Science.
The task: perform multi‑label classification (five flower categories) using Convolutional Neural Networks (CNNs) built with TensorFlow / Keras.
Beyond a straightforward application, the work demonstrates my ability to read loss–accuracy curves, diagnose model behaviour, and iteratively reshape the network architecture to reach the best validation performance.
Experimental Roadmap
- Baseline CNN. A minimalist network (conv–pool–dense) showed high training accuracy but poor generalization.
- Batch Normalization. Added after each convolution to stabilise gradients; training improved, yet validation curves remained volatile.
- Data Augmentation. Random crop, flip, brightness/contrast jitter reduced over‑fitting, raising validation accuracy at the cost of slower convergence.
- Learning‑Rate Tuning & Larger Validation Split. Lower LR plus a 30 % validation set smoothed oscillations and yielded more reliable metrics.
- Deeper Architecture + Time‑Decay LR. A third conv block (128 filters) and an exponentially decaying LR pushed validation accuracy higher across epochs.
- Adam Optimizer. Switching from SGD to Adam delivered the single biggest jump in validation performance.
- Regularization Experiments. L2 weight decay had little impact; Dropout narrowed the train–val gap but hurt accuracy—prompting a still deeper network with additional dense layers for capacity recovery.
- Segmentation Trial. Inspired by literature citing background noise as a key hurdle, I pre‑segmented flowers with Meta’s SAM. Accuracy dropped on all three segmented test sets, confirming that the tuned full‑image model remained superior.
The full code is included in the report below, while the presentation provides a detailed walkthrough of the progressive architectural refinements explored throughout the project.